The progressive digitalization of information has given birth to a myriad of communication technologies, multimedia applications, new data formats, and novel storage devices that have flourished over the past two decades. Text, images, and video transmitted over the web, server based file access, document transfers, database inquiries, and geographic mapping technologies, are among the increasing number of data and multimedia applications that transform and communicate the digital information into a format that can be readily used. The amount of resources that are required to drive this plethora of multimedia capabilities in terms of storage, transmission, and computing power can be daunting.
One of the technological advances that has allowed the deployment of data intensive and multimedia applications is data compression. For instance the delivery of large files comprising scientific information, high quality images, and live video content over the web or a corporate network involves the use of some data compression. Likewise, the transmission of such equivalent services over cell phones and other wireless technologies can greatly benefit from data compression to efficiently use the available communication bandwidth.
Data compression is the art of removing redundancy in the information content of a message, a sequence of bits stored in a file, memory buffer, data stream, etc. Representing information in fewer bits results in saving more content space on storage media, and increases the effective bandwidth available for transmission by dispensing more data per time unit. Therefore, data compression has played, and will continue to play a key role in making both communications and multimedia affordable technologies for everyone.
In the act of data compression, two different processes are implicated when referring to a data compression method. The two methods are referred to as the compressor and the reconstructor. In the literature, the latter is more commonly referred to as the decompressor or expandor, although some purists use the term reconstructor to explicitly imply a reconstruction process on the compressed data. The term reconstruction is preferred and used throughout this disclosure to refer explicitly to a reconstruction process.
The compressor, as its name implies, processes the input source and converts it into another digital representation of the original that is ideally smaller in size. By contrast, the reconstructor processes the compressed data and creates a reconstructed version of the original. If the source and the reconstructed contents match exactly, the method is said to be lossless, otherwise it is considered lossy. Lossy schemes usually obtain higher compression ratios than lossless schemes at the expense of quality degradation.
Although many compression schemes have been developed and adapted over the years, most of them place a strong emphasis on improving compression gain only. However, one factor that typically is overlooked is the speed of the compression-reconstruction process. In time critical applications, such as multimedia streaming, video processing, or wireless transfer of data, the speed of compression-reconstruction (hereinafter referred to as “codec”) can be as important, if not more important, than compression gain. Spending too much time on either compression or reconstruction is typically an unjustified commodity in most real time scenarios. It is the combination of channel bandwidth, codec gain and codec speeds which ultimately determine the response time and shape the performance of the application using the data. In short, if data is delivered faster, it will get processed and used sooner. As a result, time critical applications become possible or work more optimally if data is compressed faster.